package Z.dailyExercise.March;

import java.util.Arrays;

public class _494目标和 {

    /**
     * 思路转换：其实就是在num中寻找 几种方式和为 s-sum
     * 滑动窗口
     * @param nums
     * @param S
     * @return
     */
    public int findTargetSumWays(int[] nums, int S) {
        int sum =0;
        for (int n:nums){
            sum+= n;
        }

        int target = sum-S;
        if (target==0){
            return 1;
        }
        int left =0,right =0;
        int addNum=0;
        int res =0;
        Arrays.sort(nums);
        //采用滑动窗口 可以先排序 如果进来的数值大于target了 就可以直接返回了
        while (right < nums.length){
            int in = nums[right];
            right++;

            if (in>target){
                break;
            }else {
                addNum+= in;
            }

            while (addNum >= target){
                if (addNum == target){
                    res++;
                }
                int out = nums[left];
                left--;
                addNum -= out;

            }
        }
        return res;






    }
}
